今天的守則有點像是一個check list,列了各種設計class時應該要思考的問題,就來看看有哪些要注意的吧!
今天的守則是:
Treat class design as type design。
在物件導向的程式語言中,定義一個class就等於是定義一個new type,設計type要做的事情都要做:overload functions跟operators、控制memory的分配與釋放、初始化與完善物件...等等,所以設計一個好的class也跟設計一個好的type同具挑戰性。
好的type有哪些特性呢?自然的語法、直覺的語意、有效率的實作...等等。那要怎麼設計出有這些特性的class呢?首先必須先了解現在要解決的問題,才知道怎樣的設計才回符合使用場景需求。以下列了11+1大問題,在設計class時,把這些問題都好好想一遍吧!
這些問題都不是那麼好回答,所以設計一個class沒有那麼簡單。但如果做的好,讓使用你的class跟使用一個built-in type一樣輕鬆寫意,一切就值得了。
貼心重點提醒:
- Class design is type design. Before defining a new type, be sure to consider all the issues discussed in this Item.
總而言之,你必須對待new class像對待new type,可以藉由思考以上11+1大問題來完善class的設計,設計出一個好的類別~